package net.chenlin.dp.modules.business.dao;

import net.chenlin.dp.common.entity.Page;
import net.chenlin.dp.common.entity.Query;
import net.chenlin.dp.modules.business.entity.dto.LineChartQueryDto;
import net.chenlin.dp.modules.business.entity.vo.DataMessageVo;
import net.chenlin.dp.modules.business.entity.vo.ExcelImportDataVo;
import net.chenlin.dp.modules.business.entity.vo.device.DeviceTreeVo;
import net.chenlin.dp.modules.business.entity.vo.device.DeviceVo;
import net.chenlin.dp.modules.business.entity.vo.lineChart.AllTcpTotalVo;
import net.chenlin.dp.modules.business.entity.vo.lineChart.DateNumListVo;
import net.chenlin.dp.modules.business.entity.vo.lineChart.NewLineChartDataVo;
import net.chenlin.dp.modules.business.entity.vo.lineLossAnalysis.DeviceHistoryDataVo;
import net.chenlin.dp.modules.business.entity.vo.lineLossAnalysis.LineLossAnalysisListVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Mapper
public interface LineChartMapper {

    List<ExcelImportDataVo> getList(LineChartQueryDto queryDto);

    List<DataMessageVo> getTcpDataList(LineChartQueryDto queryDto);

    String getElectricNo(LineChartQueryDto queryDto);

    Double getTimeTotal(@Param("measurementEndTime") String measurementEndTime, @Param("list") List<String> list);

    List<DeviceVo> getDeviceListByTestNo(String testNo);

    Double getAllTotal(@Param("startDate") Date startDate, @Param("endDate") Date endDate, @Param("list") List<String> list);

    AllTcpTotalVo getAllTcpTotal(@Param("deviceNo") String deviceNo, @Param("startDate") Date startDate, @Param("endDate") Date endDate);

    List<String> getDeviceNo(String testNo);

    Date getMinDate(String deviceNo);

    Date getMaxDate(String deviceNo);

    List<String> getPassNoList(@Param("testNo") String testNo, @Param("deviceNo")  String deviceNo);

    String getEleNo(@Param("testNo") String testNo, @Param("deviceNo") String deviceNo, @Param("passNo") String passNo);

    Integer getExcelData(String eleNo);

    List<DeviceHistoryDataVo> getDeviceHistoryData(@Param("page") Page<DeviceHistoryDataVo> page, @Param("query") Query query);

    DeviceHistoryDataVo getDeviceInfo(Query query);

    Double getDeviceEleTotalByDayAndDeviceNo(@Param("dateTime") String dateTime, @Param("list") List<String> list);

    List<LineLossAnalysisListVo> getLineLossAnalysisList(@Param("page") Page<LineLossAnalysisListVo> page, @Param("query") Query query);

    String getDistrictName(String deviceNo);

    List<DateNumListVo> getDateList(@Param("deviceNo")  String deviceNo, @Param("monitoringStartTime")  Date monitoringStartTime);

    List<NewLineChartDataVo> getNewLineChart(LineChartQueryDto queryDto);

    Double getExcelImportTotal(LineChartQueryDto queryDto);

    DeviceTreeVo getDistrictChild(Long districtId);

    Integer getDeviceStatus(Query query);

    List<String> getCecondaryNo(String name);

    Integer getDeviceNoNum(@Param("array") List<String> list);

    Double getExcelImportTotalByDeviceNo(String childNo);

    Double getDeviceEleTotalByDayAndOneDeviceNo(@Param("dateTime") String dateTime, @Param("childDeviceNo")  String childDeviceNo);

    Double getDayData(@Param("dateTime")  String dateTime, @Param("childDeviceNo")  String childDeviceNo);

    Integer getDistrictId(String deviceNo);

    List<DateNumListVo> getAphaseSequenceDateList(String deviceNo, Date monitoringStartTime);

    List<DateNumListVo> getBphaseSequenceDateList(String deviceNo, Date monitoringStartTime);

    List<DateNumListVo> getCphaseSequenceDateList(String deviceNo, Date monitoringStartTime);

    BigDecimal getADeviceHistoryData(@Param("dateTime") String dateTime, @Param("paramDeviceNo") String paramDeviceNo);

    BigDecimal getBDeviceHistoryData(@Param("dateTime") String dateTime, @Param("paramDeviceNo") String paramDeviceNo);

    BigDecimal getCDeviceHistoryData(@Param("dateTime") String dateTime, @Param("paramDeviceNo") String paramDeviceNo);

    List<DeviceHistoryDataVo> getNewDeviceHistoryData(@Param("page") Page<DeviceHistoryDataVo> page, @Param("query") Query query);
}
